feat: 알림 조회·읽음 처리 API (GET/POST notifications) - #123
Conversation
…장격리, VIEWER접근, date파라미터)
…y' into feat/15-dashboard-recommendations
…OST /notifications/{id}/read) 추가
# Conflicts: # src/main/java/com/fowoco/server/dashboard/application/DashboardQueryService.java
5f70f5b to
f81371b
Compare
|
한 사람이 읽으면 회사의 모든 사람에게 읽음 처리됨 수정 방법: == 알림을 눌렀을 때 잘못된 화면으로 갈 수 있음 서버가 target_type과 target_id를 기준으로 주소를 직접 만들면 됩니다 참고로 이 PR에는 알림을 실제로 생성하는 기능은 없습니다. 따라서 이 PR만 머지하면 알림 목록은 비어 있고, 후속 생성 PR까지 적용돼야 화면에 알림이 나타납니다. => 빠진 것은 POST API가 아니라, 업무 이벤트가 발생했을 때 실제 알림 데이터를 생성하는 기능입니다. 사용자나 프론트가 알림을 직접 생성하는 POST API는 보통 필요하지 않습니다. 실제 알림 생성은 후속PR로 미루는게 어떠신지요 |
|
음 pr 본문에 설명이 부족햇던것 같은데 애초에 따로 할려고 먼저 올린거고, 그래서 이미 실제 후속 pr에서 이벤트 발생을 다루고 있습니다. 제가 설명이 부족했네요 생성쪽은 api 관련이 아니라 미리 pr 나눠서 진행할려 했던거고 각자 검증 해야하는 테스트 영역이 미묘하게 달라서 오히려 더 좋다고 생각했습니다, 또한 user id 부분 또한 현재 수정중인 사항과 같이 수정 커밋 푸쉬 되었지만 오류 발견으로 다시 되돌렸습니다. 더 신경써서 리뷰 요청드리겠습니다 아 그리고 라우트 주소도 ~이부분도 먼저 123 pr 올리고 이벤트 생성쪽 처리중, 에이전트 초안작성완료와 만료 알림은 선행된 필터기능과 스케쥴 기능 등 기타 요소로 만들 수 있었는데, 그 외의 승인 요청 / 문서 보완 요청 / 문서 제출 완료등 (또한 어떤 기준으로 알림을 발송하는지도 모호함)기능들이 이벤트를 발생시키기에 뭔가 어려운 부분들이 존재하여 질문 남겼습니다 |
제가 아침에 급급해서 본문내용이랑 필요한 부분만 보고 말씀드린것 같군요..,.! |
왜 필요한가요?
Refs #15
PR #115, #119 위에 이어서, Notification 도메인 전체(테이블, 조회 API,
읽음 처리 API)를 추가합니다. 알림을 실제로 생성하는 로직(이벤트 기반)은
후속 PR로 분리했습니다.
완료된 범위
결정 사항
불필요한 DB 쓰기 없이 멱등성을 보장합니다.
테스트 데이터를 준비했습니다. 실제 생성 로직 검증은 후속 PR에서 다룹니다.
어떻게 검증했나요?
목록 조회 시 items 2건과 unread_count 1이 정확히 나오는지 확인
읽은 알림이 제외되고 안읽은 것만 나오는지 확인
내 목록 조회에 전혀 안 나타나는지 확인 (tenant 격리)
두 번 연속 호출해도 둘 다 204가 나오고, 목록에서 실제로 read=true로
반영되는지 확인 (멱등성)
알림을 읽음 처리하려고 하면 404가 나오는지 확인 (존재 여부도 노출 안 함)
DOCUMENT 각각 정확한 경로를 생성하는지, route가 항상 target_id를
포함하는지, markAsRead()가 멱등한지 확인
내 다른 사용자(HR_A2)에게는 HR_A의 알림이 전혀 보이지 않는지 확인
만큼만 남아있을 때, has_next가 false로 정확히 나오는지 확인
(+1 전략 이전에는 이 경계에서 잘못 true가 나올 수 있었음)
때, has_next가 true로 정확히 나오고 items는 요청한 개수만큼만
잘리는지 확인
리뷰 반영
같은 회사 내 다른 사용자에게는 읽음 처리가 전파되지 않도록 수정했습니다.
target_type + target_id로 서버가 route를 직접 생성하도록
변경했습니다(Notification.buildRoute()). target_id와 route가
서로 다른 값을 가리키는 불일치가 구조적으로 불가능해집니다.
추가 개선
정확하도록 수정했습니다.